// 假设表达式中允许包含两种括号:圆括号和方括号。编写一个算法判断表达式中的括号是否正确配对。
// 由括号构成的字符串，包含”（“、”）“、”[“和”]“。如果匹配输出YES，否则输出NO。
#include <bits/stdc++.h>
using namespace std;
int main() {
    string s;
    cin >> s;
    stack<char> st;
    for (int i = 0; i < s.size(); i++) {
        if (s[i] == '(' || s[i] == '[') {
            st.push(s[i]);
        } else {
            if (st.empty()) {
                cout << "NO" << endl;
                return 0;
            }
            if (s[i] == ')' && st.top() == '(') {
                st.pop();
            } else if (s[i] == ']' && st.top() == '[') {
                st.pop();
            } else {
                cout << "NO" << endl;
                return 0;
            }
        }
    }
    if (st.empty()) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }
    return 0;
}